#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__author__ = "Administrator"
__name__="thread_lock4"
__date__="2016/7/29"
__time__="14:55"
"""
# 信号量--一个池子，可以允许多个线程获取锁。
# 应用实现：类似mysql 允许最大连接数（C语言实现）

import threading
import time
num = 0
def run(n):
    time.sleep(1)
    global num

    samp.acquire()
    time.sleep(0.001)   # 4个线程会出现同时抢的情况，多次执行结果不一样。
    num+=1
    print '%s' % num
    samp.release()

    #time.sleep(0.01)

#lock = threading.Lock()
samp = threading.BoundedSemaphore(4)    # 允许4个线程同时获取锁，允许4个线程同时操作变量num
for i in range(100):
    t = threading.Thread(target=run,args=(i,))
    t.start()
